home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / bitmap1g / hitcount.ctl < prev    next >
Text File  |  1999-07-15  |  8KB  |  251 lines

  1. VERSION 5.00
  2. Object = "{27395F88-0C0C-101B-A3C9-08002B2F49FB}#1.1#0"; "PICCLP32.OCX"
  3. Begin VB.UserControl HitCounter 
  4.    Appearance      =   0  'Flat
  5.    ClientHeight    =   465
  6.    ClientLeft      =   0
  7.    ClientTop       =   0
  8.    ClientWidth     =   4740
  9.    ClipControls    =   0   'False
  10.    ScaleHeight     =   31
  11.    ScaleMode       =   3  'Pixel
  12.    ScaleWidth      =   316
  13.    ToolboxBitmap   =   "HitCounter.ctx":0000
  14.    Begin PicClip.PictureClip PicClip 
  15.       Left            =   0
  16.       Top             =   0
  17.       _ExtentX        =   6615
  18.       _ExtentY        =   661
  19.       _Version        =   327681
  20.       Cols            =   10
  21.       Picture         =   "HitCounter.ctx":0312
  22.    End
  23.    Begin VB.Image Numeral 
  24.       Enabled         =   0   'False
  25.       Height          =   990
  26.       Index           =   0
  27.       Left            =   0
  28.       Top             =   0
  29.       Visible         =   0   'False
  30.       Width           =   540
  31.    End
  32. End
  33. Attribute VB_Name = "HitCounter"
  34. Attribute VB_GlobalNameSpace = False
  35. Attribute VB_Creatable = True
  36. Attribute VB_PredeclaredId = False
  37. Attribute VB_Exposed = True
  38. Option Explicit
  39.  
  40. Const CHAR_CNT As Integer = 10
  41. Const TITLE As String = "HitCounter"
  42. Const KEY As String = "Value"
  43. Const D_GRAY As Long = &HC0C0C0
  44.  
  45. Enum BorderStyles
  46.     None
  47.     Fixed
  48. End Enum
  49.  
  50. Dim Numerals() As IPictureDisp
  51. Dim HitCnt As Long
  52.  
  53. Dim Nums As Integer
  54. Dim NumCnt As Integer
  55. Dim NumSpc As Integer
  56. Dim InRunMode As Boolean
  57. Dim Initialized As Boolean
  58.  
  59. Event Click()
  60. Attribute Click.VB_Description = "Occurs when the user presses and then releases a mouse button over an object."
  61. Event DblClick()
  62. Attribute DblClick.VB_Description = "Occurs when the user presses and releases a mouse button and then presses and releases it again over an object."
  63. Event KeyDown(KeyCode As Integer, Shift As Integer)
  64. Attribute KeyDown.VB_Description = "Occurs when the user presses a key while an object has the focus."
  65. Event KeyPress(KeyAscii As Integer)
  66. Attribute KeyPress.VB_Description = "Occurs when the user presses and releases an ANSI key."
  67. Event KeyUp(KeyCode As Integer, Shift As Integer)
  68. Attribute KeyUp.VB_Description = "Occurs when the user releases a key while an object has the focus."
  69. Event MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  70. Attribute MouseDown.VB_Description = "Occurs when the user presses the mouse button while an object has the focus."
  71. Event MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  72. Attribute MouseUp.VB_Description = "Occurs when the user releases the mouse button while an object has the focus."
  73.  
  74. Public Property Get BorderStyle() As BorderStyles
  75.     BorderStyle = UserControl.BorderStyle
  76. End Property
  77.  
  78. Property Let BorderStyle(NewStyle As BorderStyles)
  79.     UserControl.BorderStyle = NewStyle
  80.     PropertyChanged "BorderStyle"
  81. End Property
  82.  
  83. Public Property Get BackColor() As OLE_COLOR
  84. Attribute BackColor.VB_Description = "Returns/sets the background color used to display text and graphics in an object."
  85.     BackColor = UserControl.BackColor
  86. End Property
  87.  
  88. Public Property Let BackColor(ByVal New_BackColor As OLE_COLOR)
  89.     UserControl.BackColor = New_BackColor
  90.     PropertyChanged "BackColor"
  91. End Property
  92.  
  93. Public Property Get Space() As Integer
  94.     Space = NumSpc
  95. End Property
  96.  
  97. Public Property Let Space(ByVal New_Space As Integer)
  98.     NumSpc = New_Space
  99.     PropertyChanged "Space"
  100.     Display
  101. End Property
  102.  
  103. Property Get NumeralCount() As Integer
  104.     NumeralCount = Nums
  105. End Property
  106.  
  107. Property Let NumeralCount(New_NumeralCount As Integer)
  108.     Nums = New_NumeralCount
  109.     PropertyChanged "NumeralCount"
  110.     UserControl_Resize
  111.     Display
  112. End Property
  113.  
  114. Public Property Get NumeralPicture() As Picture
  115. Attribute NumeralPicture.VB_Description = "Same as the standard Picture property except that it only supports bitmap (.BMP) files."
  116.     Set NumeralPicture = PicClip.Picture
  117. End Property
  118.  
  119. Public Property Set NumeralPicture(ByVal New_NumeralPicture As Picture)
  120.     Set PicClip.Picture = New_NumeralPicture
  121.     PropertyChanged "NumeralPicture"
  122.     LoadNumerals
  123.     Display
  124. End Property
  125.  
  126. Private Sub Numeral_Click(Index As Integer)
  127.     RaiseEvent Click
  128. End Sub
  129.  
  130. Private Sub UserControl_Click()
  131.     RaiseEvent Click
  132. End Sub
  133.  
  134. Private Sub UserControl_DblClick()
  135.     RaiseEvent DblClick
  136. End Sub
  137.  
  138. Private Sub UserControl_InitProperties()
  139.     UserControl.BackColor = D_GRAY
  140.     Debug.Print "BorderChanged"
  141.     NumSpc = 2
  142.     Initialized = True
  143. End Sub
  144.  
  145. Private Sub UserControl_KeyDown(KeyCode As Integer, Shift As Integer)
  146.     RaiseEvent KeyDown(KeyCode, Shift)
  147. End Sub
  148.  
  149. Private Sub UserControl_KeyPress(KeyAscii As Integer)
  150.     RaiseEvent KeyPress(KeyAscii)
  151. End Sub
  152.  
  153. Private Sub UserControl_KeyUp(KeyCode As Integer, Shift As Integer)
  154.     RaiseEvent KeyUp(KeyCode, Shift)
  155. End Sub
  156.  
  157. Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  158.     RaiseEvent MouseDown(Button, Shift, ScaleX(X, ScaleMode, vbContainerPosition), ScaleX(Y, ScaleMode, vbContainerPosition))
  159. End Sub
  160.  
  161. Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  162.     RaiseEvent MouseUp(Button, Shift, ScaleX(X, ScaleMode, vbContainerPosition), ScaleX(Y, ScaleMode, vbContainerPosition))
  163. End Sub
  164.  
  165. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  166.     UserControl.BackColor = PropBag.ReadProperty("BackColor", D_GRAY)
  167.     UserControl.BorderStyle = PropBag.ReadProperty("BorderStyle", None)
  168.     NumSpc = PropBag.ReadProperty("Space", 2)
  169.     Nums = PropBag.ReadProperty("NumeralCount", 0)
  170.     Set Picture = PropBag.ReadProperty("NumeralPicture", Nothing)
  171.     InRunMode = Ambient.UserMode
  172.     LoadNumerals
  173.     Display
  174. End Sub
  175.  
  176. Private Sub UserControl_Resize()
  177. Dim X As Double, Y As Double
  178.     If Initialized Then
  179.         Initialized = False
  180.         X = PicClip.CellWidth * Len(HitCount) - Len(HitCount) + NumSpc * 2 + 1
  181.         Y = PicClip.CellHeight + NumSpc * 2
  182.         If BorderStyle = Fixed Then X = X + 2: Y = Y + 2
  183.         UserControl.Width = ScaleX(X, ScaleMode, 1)
  184.         UserControl.Height = ScaleX(Y, ScaleMode, 1)
  185.     End If
  186.     Initialized = True
  187. End Sub
  188.  
  189. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  190.     PropBag.WriteProperty "BackColor", UserControl.BackColor, D_GRAY
  191.     PropBag.WriteProperty "BorderStyle", UserControl.BorderStyle, None
  192.     PropBag.WriteProperty "Space", NumSpc, 2
  193.     PropBag.WriteProperty "NumeralCount", Nums, 0
  194.     PropBag.WriteProperty "NumeralPicture", Picture, Nothing
  195. End Sub
  196.  
  197. Private Sub LoadNumerals()
  198.     For NumCnt = 0 To CHAR_CNT - 1
  199.         ReDim Preserve Numerals(0 To NumCnt)
  200.         Set Numerals(NumCnt) = PicClip.GraphicCell(NumCnt)
  201.     Next NumCnt
  202. End Sub
  203.  
  204. Public Sub ResetHits(Optional ResetValue As Long)
  205.     If Not Initialized Then Exit Sub
  206.     HitCnt = ResetValue - 1
  207.     PerformHit
  208.     Display
  209. End Sub
  210.  
  211. Public Function HitCount() As String
  212. Dim RegHits As Long
  213.     RegHits = Abs(Val(GetSetting(TITLE, Parent.Name & "." & Ambient.DisplayName, KEY, 0)))
  214.     HitCount = Format(RegHits, String(Nums, "0"))
  215. End Function
  216.  
  217. Public Sub PerformHit()
  218. Dim i As Integer
  219.     If InRunMode Then i = 1
  220.     HitCnt = Val(HitCnt) + i
  221.     SaveSetting TITLE, Parent.Name & "." & Ambient.DisplayName, KEY, HitCnt
  222.     Display
  223. End Sub
  224.  
  225. Private Sub Display()
  226. Dim CharCnt As Integer
  227. Dim i As Integer, CurNum As Integer
  228. Dim X As Integer
  229.     KillBoxes
  230.     UserControl_Resize
  231.     CharCnt = Len(HitCount)
  232.     X = NumSpc
  233.     For i = 1 To CharCnt
  234.         Load Numeral(i)
  235.         CurNum = Val(Right(Left(HitCount, i), 1))
  236.         Numeral(i).Left = X
  237.         Numeral(i).Top = NumSpc
  238.         Numeral(i).Visible = True
  239.         Numeral(i).Picture = Numerals(CurNum)
  240.         X = X + Numeral(i).Width - 1
  241.     Next i
  242. End Sub
  243.  
  244. Private Sub KillBoxes()
  245. Dim BoxCount As Integer
  246.     On Error Resume Next
  247.     For BoxCount = CHAR_CNT To 1 Step -1
  248.         Unload Numeral(BoxCount)
  249.     Next BoxCount
  250. End Sub
  251.